package org.inspiration.dudu.web.service.user.impl;

import lombok.RequiredArgsConstructor;
import org.inspiration.dudu.common.pojo.Result;
import org.inspiration.dudu.user.model.dto.UserInfoDTO;
import org.inspiration.dudu.user.model.vo.UserVO;
import org.inspiration.dudu.user.service.UserService;
import org.inspiration.dudu.user.util.UserContextUtil;
import org.inspiration.dudu.web.service.user.UserFacadeService;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * 用户外观服务实现类
 * 提供用户相关的服务接口实现
 */
@Service
@RequiredArgsConstructor
public class UserFacadeServiceImpl implements UserFacadeService {

    private final UserService userService;

    /**
     * 查找所有用户
     * @return 用户视图对象列表
     */
    @Override
    public List<UserVO> findAllUsers() {
        return userService.getAllUsers();
    }

    /**
     * 根据用户ID查找用户
     * @param id 用户ID
     * @return 用户视图对象
     */
    @Override
    public UserVO getUserById(Long id) {
        return userService.getUserById(id);
    }

    /**
     * 根据用户Token查找用户
     * @return 用户视图对象
     */
    @Override
    public UserVO getUserByToken() {
        Long id = UserContextUtil.getUserVO().getId();
        return userService.getUserById(id);
    }

    /**
     * 根据用户ID更新用户信息
     * @param userInfoDTO 用户信息数据传输对象
     */
    @Override
    public void updateUserById(UserInfoDTO userInfoDTO) {
        userService.updateUserById(userInfoDTO);
    }

    /**
     * 上传用户头像
     * @param id 用户ID
     * @param file 用户头像文件
     */
    @Override
    public void uploadAvatar(Long id, MultipartFile file) {
        userService.uploadAvatar(id, file);
    }

    @Override
    public Boolean isOnline(Long id) {
        return userService.isOnline(id);
    }

    @Override
    public List<UserVO> getOnlineUsers(Integer pageNum, Integer pageSize) {
        return userService.getOnlineUsers(pageNum, pageSize);
    }

    @Override
    public Long onlineUserCount() {
        return userService.onlineUserCount();
    }
}
